/**************************************************************************************************/
/* Vector2.hpp                                                                            Version */
/* Author     : Ravi Kamath                                                                       */
/* Created    : 01-Oct-2012                                                                       */
/* Modified   : 01-Oct-2012                                                                       */
/**************************************************************************************************/
/* A brief description of what this header file provides can be put here.                         */
/**************************************************************************************************/
/* Todos or other information like known issues and bugs go here                                  */
/**************************************************************************************************/

#ifndef __OLORIN_VECTOR2__
#define __OLORIN_VECTOR2__

#include <DLL.hpp>

namespace Olorin
{
	namespace Framework
	{
		class DLLAPI Vector2
		{
		private:
			float coords[2];
		public:
			// Static constant members
			static const Vector2 Zero;		// (0, 0)
			static const Vector2 One;		// (1, 1)
			static const Vector2 UnitX;		// (1, 0)
			static const Vector2 UnitY;		// (0, 1)

			// Constructors
			Vector2();
			Vector2(const Vector2&);
			Vector2(const float&, const float&);
			Vector2(const float&);

			// Mutators
			void setX(const float&);
			void setY(const float&);
			void setCoord(const int&, const float&);

			// Accessors
			const float& getX() const;
			const float& getY() const;
			const float& getCoord(const int&) const;
		};
	}
}

#endif